草庐IT

C++ 空类或 typedef

全部标签

c++ - 我们可以通过实例访问 typedef 类型吗?

我想知道,for(std::map>::iteratorit=mymap.begin();it!=mymap.end();++it){//dostuff}为什么我不能这样写:for(mymap::iteratorit=mymap.begin();it!=mymap.end();++it){//dostuff}当然,对map进行类型定义会使第一个代码不那么冗长-但这不是我的意思。编译器知道mymap的类型,那么为什么不让它解析mymap::iterator呢?是否存在无法通过实例访问iterator的原因? 最佳答案 ::是一个范围解

C++ typedef 与未详细说明的继承

我有一个由嵌套的STL容器组成的数据结构:typedefstd::mapSmValueProb;typedefstd::mapSmGuard;typedefstd::mapSmTransitions;typedefstd::mapSmMachine;这种形式的数据只在我的程序中短暂使用,除了简单地存储它们的数据之外,没有太多的行为可以附加到这些类型。然而,编译器(VC++2010)提示生成的名称太长。将类型重新定义为STL容器的子类而无需进一步详细说明似乎可行:typedefstd::mapSmValueProb;classSmGuard:publicstd::map{};classS

已知大小typedefed数组的c++函数模板特化

请考虑以下代码:#include#includetemplatevoidfunc(Typevar){std::coutvarisSCALAR.Size="voidfunc(Type*var){std::coutvarisARRAY.Size="如果我编译并运行它,我会看到:>g++-Wall-g3spec_f_pointer.cpp-ospec_f_pointer>./spec_f_pointerSizeofchar16=16func:var=16byteschars.[Pc].->varisARRAY.Size=8很明显func中打印的sizeof指的是指针的大小,而不是typede

c++ - GCC 中的结构对齐(是否应在 typedef 中指定对齐?)

抱歉问了一个愚蠢的问题,但如果我需要确保结构/类/union的对齐,我应该在typedef声明中添加attribute((aligned(align)))吗?classmyAlignedStruct{}__attribute__((aligned(16)));typedefmyAlignedStructmyAlignedStruct2;//WillmyAlignedStruct2bealignedby16bytesornot? 最佳答案 shouldIaddattribute((aligned(align)))totypedefde

c++ - 比较 typedef 是否相同类型

我正在使用C++(不是11),并使用一些对整数数据类型具有不同typedef的库。有什么办法可以断言两个typedef是同一类型吗?我自己想出了以下解决方案..安全吗?谢谢templatestructTypeTest{staticvoidCompare(constTypeTest&other){}};typedefunsignedlonglongUINT64;typedefunsignedlonglongUINT_64;typedefunsignedintUINT_32;intmain(){TypeTest::Compare(TypeTest());//passTypeTest::Co

C++ typedef enum 和 just enum

这个问题在这里已经有了答案:WhydoyouusetypedefwhendeclaringanenuminC++?(9个回答)关闭8年前。到底有什么区别:typedefenum{something1,something2,.....somethingN}myEnum;刚刚结束enummyEnum{something1,something2,.....somethingN};我知道在第一种情况下我定义了未命名的枚举,当然,只是想知道哪种方法更好,为什么?

c++ - C++中typedef的作用

typedefset>SetInt;请解释这段代码的作用。 最佳答案 这意味着每当你创建一个SetInt,您实际上是在创建set>的对象.例如,它使下面两段代码等价:SetIntsomevar;和set>somevar; 关于c++-C++中typedef的作用,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1585515/

c++ - 将 C++ 与 Objective-C 结合使用,如何修复 "Conflicting declaration ' typedef int BOOL'"?

我有很多C++代码,最初是在PC上构建的。我试图让它在Mac上与Objective-C一起工作。为此,我创建了一个Objective-C框架来容纳C++代码并添加了一个瘦包装器。但是我在我的C++代码中遇到了typedef问题。当我在PC上使用C++时,我使用了WinDef.h中定义的BOOL变量。因此,当我在Mac上移动所有内容时,我添加了typedefintBOOL;以确保BOOL变量仍会按预期编译。但是当我尝试编译时出现错误:“Conflictingdeclaration'typedefintBOOL'”。我假设这是因为BOOL是Objective-C中的关键字,因此已经定义了。

c++ - 没有初始值设定项或显式默认构造函数的空类是否可用作 constexpr 变量?

给定以下代码:structf{};intmain(){constexprff1;//constff1;//Thisalsohasthesameissue//constexprff1={};//Thisworks}clang和gcc不同意它是否有效,clang提供以下诊断(seeitlive):error:defaultinitializationofanobjectofconsttype'constf'withoutauser-provideddefaultconstructorconstexprff1;^{}据我所知,f是一种文字类型,它由隐式默认构造函数初始化,该构造函数应允许将其

c++ - 特征中的 typedef 与类中的 typedef

出于教育目的,我正在查看Eigen源代码。我注意到对于每个具体类模板X在层次结构中,有一个internal::traits定义。一个典型的例子可以在Matrix.h中找到:namespaceinternal{templatestructtraits>{typedef_ScalarScalar;typedefDenseStorageKind;typedefDenseIndexIndex;typedefMatrixXprXprKind;enum{RowsAtCompileTime=_Rows,ColsAtCompileTime=_Cols,MaxRowsAtCompileTime=_Max